﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Distrackting.DataLayer;
using System.Collections.Generic;
using System.Collections;

namespace Distrackting.BusinessLayer
{
    public class GerirNivelUtilizador
    {
        public static List<Nivel_utilizador> getNiveisUtilizador()
        {
            try
            {
               return (from n in dataNivel_utilizador.getNivel_utilizadores()
                orderby n.nivel
                 select n).ToList();
            }
            catch (Exception)
            {
                throw new Exception("Não foi possível obter a lista dos níveis de utilizador.");
            }
        }

        public static void inserirNivelUtilizador(String descricao, int nivel)
        {
            try
            {
                Nivel_utilizador a = new Nivel_utilizador();
                a.descricao = descricao;
                a.nivel = nivel;
                dataNivel_utilizador.createNivel_utilizadores(a);
            }
            catch (Exception )
            {
                throw new Exception("Não foi possível inserir o nível de utilizador.");
            }
        }

        public static void apagarNivelUtilizador(Guid cod_NivelUtilizador)
        {
            try
            {
                Nivel_utilizador a = dataNivel_utilizador.getNivel_utilizador(cod_NivelUtilizador);
                dataNivel_utilizador.deleteNivel_utilizador(a);
            }
            catch (Exception)
            {
                throw new Exception("Não foi possível remover o nível de utilizador.");
            }
        }

        public static Nivel_utilizador getNivelUtilizador(Guid cod_NivelUtilizador)
        {
            try
            {
                return dataNivel_utilizador.getNivel_utilizador(cod_NivelUtilizador);
            }
            catch (Exception )
            {
                throw new Exception("Não foi possível aceder ao nível de utilizador.");
            }
        }

        public static Nivel_utilizador getNivelUtilizadorByDescricao(String descricao)
        {
            try
            {
                Nivel_utilizador n = new Nivel_utilizador();
                foreach (Nivel_utilizador a in dataNivel_utilizador.getNivel_utilizadores().ToList())
                {
                    if (a.descricao == descricao) return a;
                }
                return n;
            }
            catch (Exception)
            {
                throw new Exception("Não foi possível aceder ao nível de utilizador pretendido.");
            }
        }

        public static Nivel_utilizador getNivelUtilizadorByNivel(int nivel)
        {
            try
            {
                Nivel_utilizador n = new Nivel_utilizador();
                foreach (Nivel_utilizador a in dataNivel_utilizador.getNivel_utilizadores().ToList())
                {
                    if (a.nivel == nivel) return a;
                }
                return n;
            }
            catch (Exception )
            {
                throw new Exception("Não foi possível aceder ao nível de utilizador pretendido.");
            }
        }
    }
}
